神奇的题目。
网上说什么做了这道题 $Splay$ 就差不多了,嗯对窝也这么觉得。于是终于码掉了。
主要涉及的操作还是提取区间,我们组需要将 $l-1$ 提取至 $root$ , 然后将 $r+1$ 提取至 $l-1$ 的下方,最终询问的 $l,r$ 区间的 $Splay$ 就是 $r+1$ 的左孩子。
这个时候该输出的就输出,该打标记的就打标记就好了。
至于插入的话我们可以先将所有需要插入的结点 $build$ 成一棵树,然后直接挂到 $r+1$ 的左孩子即可。
但是毒瘤出题人卡空间,于是我们需要将删除的结点全部重新应用,就像垃圾回收那样,搞个栈就行了。
最后因为怕 $l-1$ 和 $r+1$ 出界我们还需要新增两个”哨兵结点”,这样子的话需要提取的结点都加上了 $1$ ,提取区间变动的两个节点就变成 $l$ 和 $r+2$ 了。
Code:
1 |
|
哎离 $HNOI2019$ 不远了,感觉多多更博增加 $RP$ …… $QwQ$
本文标题:【题解】 [NOI2005]维护数列 Splay luoguP2042
文章作者:Qiuly
发布时间:2019年04月02日 - 00:00
最后更新:2019年04月02日 - 10:06
原始链接:http://qiulyblog.github.io/2019/04/02/[题解]luoguP2042/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。